package com.xmmj.baselibrary.utils.websocket

/**
 * WebSocket暴露接口
 */
interface IWebSocket {
    /**
     * 发起连接
     */
    fun connect()

    /**
     * 断开连接
     */
    fun disconnect()

    /**
     * 销毁
     */
    fun destory()

    /**
     * 判断连接状态
     */
    fun isConnected(): Boolean

    /**
     * 主动断开之后再次重连，用于异常状态尝试重连
     */
    fun disconnectAndReconnect()

    /**
     * 刷新心跳标记，收到服务端返回心跳包后，调用者需主动调用该方法告诉底层逻辑已收到心跳包
     */
    fun refreshHeartFlag()

    /**
     * 发送消息
     *
     * @param msg 消息
     */
    fun sendMsg(msg: String?)

    /**
     * 是否调试(日志)模式
     *
     * @param debug 是否是调试版本
     */
    fun setDebug(debug: Boolean)

    /**
     * 设置心跳包数据（为了兼容有些需要动态修改心跳包内容的需求）
     *
     * @param heartBeatData 心跳包数据
     */
    fun setHeartBeatData(heartBeatData: String?)
}